다음을 통해 공유


System.Nullable<T> 구조체

이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.

클래스는 Nullable 할당 null할 수 있는 값 형식을 나타냅니다.

형식은 값을 할당하거나 할당 null할 수 있는 경우 null 허용이라고 합니다. 즉, 형식에 값이 전혀 없습니다. 기본적으로 모든 참조 형식(예: Stringnullable)은 null 허용이지만, 같은 Int32모든 값 형식은 그렇지 않습니다.

C# 및 Visual Basic에서는 값 형식 뒤의 표기법을 사용하여 값 형식을 ? nullable로 표시합니다. 예를 들어 int? C# 또는 Integer? Visual Basic에서는 할당 null할 수 있는 정수 값 형식을 선언합니다.

구조체는 Nullable<T> 의도적으로 참조 형식을 null 허용하므로 값 형식만 nullable 형식으로 사용할 수 있습니다.

클래스는 Nullable 구조에 대한 Nullable<T> 보완적인 지원을 제공합니다. 클래스는 Nullable nullable 형식의 기본 형식을 가져오고 기본 값 형식이 제네릭 비교 및 같음 연산을 지원하지 않는 nullable 형식 쌍에 대한 비교 및 같음 연산을 지원합니다.

기본 속성

구조체의 Nullable<T> 두 가지 기본 멤버는 및 Value 속성입니다HasValue. 개체의 HasValue 속성 Nullable<T>true면 해당 속성으로 개체 값에 Value 액세스할 수 있습니다. 속성이 HasValue false면 개체의 값이 정의되지 않고 속성에 Value 액세스하려고 하면 throw InvalidOperationException됩니다.

boxing 및 unboxing

nullable 형식이 boxed되면 공용 언어 런타임은 개체 자체가 아닌 개체의 Nullable<T> 기본 값을 자동으로 상자로 만듭니 Nullable<T> 다. 즉, 속성이 HasValuetrue속성의 내용이 Value boxed됩니다. nullable 형식의 기본 값이 unboxed이면 공용 언어 런타임은 기본 값으로 초기화된 새 Nullable<T> 구조를 만듭니다.

HasValue nullable 형식의 속성이false면 boxing 작업의 결과는 다음과 입니다null. 따라서 boxed nullable 형식이 개체 인수를 예상하는 메서드에 전달되는 경우 해당 메서드는 인수 null가 있는 경우를 처리하도록 준비해야 합니다. null nullable 형식으로 unboxed되면 공용 언어 런타임은 새 Nullable<T> 구조를 만들고 해당 HasValue 속성을 false로 초기화합니다.

Windows 런타임 구성 요소

형식을 Nullable<T> WinMD 라이브러리에서 내보낸 구조체의 멤버로 포함할 수 있습니다.